﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Security.Permissions;
using System.Collections;
using System.Linq;

using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Data.SqlTypes;


namespace ENLibraryClass
{

    public class ENPedidos
    {
   



        private int id;
        private int vehiculo;
        private int cliente;
        private int empleado;
        private int chofer;
        private string tipotransaccion;
        private string formadepago;
        private float precio;
        private float preciofinal;
        private DateTime fecharealizado;
        private DateTime fechafinalizado;
        private string estadopedido;
        private string facturado;
        private string opcion1;
        private string opcion2;
        private string opcion3;
        private string opcion4;
        private string opcion5;
        private string opcion6;



        private CADLibraryClass.PedidosCAD cadPedidos;


        //CONSTRUCTOR
        public ENPedidos()
        {
            id = 0;
            vehiculo = 0;
            cliente = 0;
            empleado = 0;
            chofer = 0;
            tipotransaccion = null;
            formadepago = null;
            precio = 0.0F;
            preciofinal = 0.0F;
            fecharealizado = DateTime.Parse("01/01/1900");
            fechafinalizado = DateTime.Parse("01/01/1900");
            estadopedido = null;
            facturado = null;
            opcion1 = null;
            opcion2 = null;
            opcion3 = null;
            opcion4 = null;
            opcion5 = null;
            opcion6 = null;





            cadPedidos = new CADLibraryClass.PedidosCAD();
        }


        public ENPedidos(int pid, int pvehiculo, int pcliente, int pempleado, int pchofer, string ptipotransaccion, string pformadepago, float pprecio, float ppreciofinal, DateTime pfecharealizado, DateTime pfechafinalizado, string pestadopedido, string pfacturado, string popcion1, string popcion2, string popcion3, string popcion4, string popcion5, string popcion6 )
        {
            id = pid;
            vehiculo = pvehiculo;
            cliente = pcliente;
            empleado = pempleado;
            chofer = pchofer;
            tipotransaccion = ptipotransaccion;
            formadepago = pformadepago;
            precio = pprecio;
            preciofinal = ppreciofinal;
            fecharealizado = pfecharealizado;
            fechafinalizado = pfechafinalizado;
            estadopedido = pestadopedido;
            facturado = pfacturado;
            opcion1 = popcion1;
            opcion2 = popcion2;
            opcion3 = popcion3;
            opcion4 = popcion4;
            opcion5 = popcion5;
            opcion6 = popcion6;



            cadPedidos = new CADLibraryClass.PedidosCAD();


        }


        //PROPIEDADES PUBLICAS
        public int Id
        {
            get { return id; }
            set { id = value; }
        }

       public int Vehiculo
        {
            get { return id; }
            set { id = value; }
        }
       public int Cliente
        {
            get { return id; }
            set { id = value; }
        }
       public int Empleado
        {
            get { return id; }
            set { id = value; }
        }
       public int Chofer
        {
            get { return id; }
            set { id = value; }
        }

        public string Tipotransaccion
        {
            get { return tipotransaccion; }
            set { tipotransaccion = value; }
        }

        public string Formadepago
        {
            get { return formadepago; }
            set { formadepago = value; }
        }

        public float Precio
        {
            get { return precio; }
            set { precio = value; }
        }

        public float Preciofinal
        {
            get { return preciofinal; }
            set { preciofinal = value; }
        }

         public DateTime Fecharealizado
        {
            get { return fecharealizado; }
            set { fecharealizado = value; }
        }

        public DateTime Fechafinalizado
        {
            get { return fechafinalizado; }
            set { fechafinalizado = value; }
        }

        public string EstadoPedido
        {
            get { return estadopedido; }
            set { estadopedido = value; }
        }

        public string Facturado
        {
            get { return facturado; }
            set { facturado = value; }
        }

        public string Opcion1
        {
            get { return opcion1; }
            set { opcion1 = value; }
        }
        public string Opcion2
        {
            get { return opcion2; }
            set { opcion2 = value; }
        }
        public string Opcion3
        {
            get { return opcion3; }
            set { opcion3 = value; }
        }
        public string Opcion4
        {
            get { return opcion4; }
            set { opcion4 = value; }
        }
        public string Opcion5
        {
            get { return opcion5; }
            set { opcion5 = value; }
        }
        public string Opcion6
        {
            get { return opcion6; }
            set { opcion6 = value; }
        }



        public bool AltaPedido()
        {
            try
            {
                bool nuevo = false;

                nuevo = cadPedidos.AltaPedido(id, vehiculo, cliente, empleado, chofer, tipotransaccion, formadepago, precio, preciofinal, fecharealizado, fechafinalizado, estadopedido, facturado, opcion1, opcion2, opcion3, opcion4, opcion5, opcion6 );

                return nuevo;
            }

            catch (SqlException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }


        public bool EmisionFactura()
        {
            try
            {
                bool fact = false;

                ENIdSiguiente idsiguiente = new ENIdSiguiente("factura",0);
                int idfact = idsiguiente.BuscarIdSiguiente();
                fact = cadPedidos.EmisionFactura(idfact, id);
                idsiguiente.ActualizarIdSiguiente();

                return fact;
            }

            catch (SqlException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public DataTable BuscarFactura()
        {
            try
            {
                return cadPedidos.BuscarFactura(id);
            }

            catch (SqlException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public bool ModificarPedido()
        {
            try
            {
                bool modificado = false;

                modificado = cadPedidos.ModificarPedido(id, vehiculo, cliente, empleado, chofer, tipotransaccion, formadepago, precio, preciofinal, fecharealizado, fechafinalizado, estadopedido, facturado, opcion1, opcion2, opcion3, opcion4, opcion5, opcion6);

                return modificado;
            }

            catch (SqlException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }




        public DataTable BuscarPedidos(ref DataTable todos, ref DataTable curso, ref DataTable fin) 
        {
            try
            {
                return cadPedidos.BuscarPedidos(ref todos, ref curso, ref fin);
            }

            catch (SqlException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public DataTable BuscarPedidosPor(ref DataTable todos, ref DataTable curso, ref DataTable fin)
        {
            try
            {
                return cadPedidos.BuscarPedidos(id, vehiculo, cliente, empleado, chofer, tipotransaccion, formadepago, precio, preciofinal, fecharealizado, fechafinalizado, estadopedido, opcion1, opcion2, opcion3, opcion4, opcion5, opcion6, ref todos, ref curso, ref fin);
            }

            catch (SqlException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }


        public bool BorrarPedido()
        {
            try
            {
                return cadPedidos.BorrarPedido(id);
            }

            catch (SqlException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }


        public float RecuperarPrecio(int idp, string tipop)
        {
            try
            {
                return cadPedidos.RecuperarPrecio(idp, tipop);
            }

            catch (SqlException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public DataTable VehiculoMasAlquilado()
        {
            try
            {
                return cadPedidos.VehiculoMasAlquilado();
            }

            catch (SqlException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public DataTable ClienteMasAlquila()
        {
            try
            {
                return cadPedidos.ClienteMasAlquila();
            }

            catch (SqlException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public DataTable EmpleadoMasAlquila()
        {
            try
            {
                return cadPedidos.EmpleadoMasAlquila();
            }

            catch (SqlException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public DataTable ModeloMasAlquilado()
        {
            try
            {
                return cadPedidos.ModeloMasAlquilado();
            }

            catch (SqlException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
       
    


    


      
       
    }
}


